package com.xiaoshuidi.cloud.module.finance.controller.admin.invoice.vo;

import com.baomidou.mybatisplus.annotation.TableId;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.ToString;

import java.math.BigDecimal;

@Schema(description = "开票管理 -  Response VO")
@Data
@ToString(callSuper = true)
public class BaseInvoiceVO {

    private Long tenantId;

    @TableId
    private Long id;

    @Schema(description = "已开票金额")
    private String invoiceAmount;//已开票金额
    /**
     * 客户类型
     */
    @Schema(description = "客户类型：个人INDIVIDUAL/企业COMPANY/房间ROOM")
    private String custType;
    /**
     * 客户id
     */
    @Schema(description = "客户id")
    private Long custId;
    /**
     * 账单号
     */
    @Schema(description = "账单号")
    private String orderNo;
    /**
     * 门店id
     */
    @Schema(description = "门店id")
    private Long apartmentId;
    /**
     * 发票类型：0-增值税电子普通发票,1-增值税电子专用发票
     */
    @Schema(description = "发票类型：0-增值税电子普通发票,1-增值税电子专用发票")
    private String invoiceType;
    /**
     * 发票抬头
     */
    @Schema(description = "发票抬头")
    private String title;
    /**
     * 纳税人识别号
     */
    @Schema(description = "纳税人识别号")
    private String taxpayerId;
    /**
     * 公司地址
     */
    @Schema(description = "公司地址")
    private String companyAddress;
    /**
     * 公司电话
     */
    @Schema(description = "公司电话")
    private String companyTel;
    /**
     * 开户行
     */
    @Schema(description = "开户行")
    private String bank;
    /**
     * 开户行账号
     */
    @Schema(description = "开户行账号")
    private String bankAccount;
    /**
     * 开票状态：1 开票中 2 已开票 3 开票失败 4 已红冲 5 已作废 6 已换开 7 红冲申请中 8 红冲确认中 9红冲失败
     */
    @Schema(description = "开票状态：1 开票中 2 已开票 3 开票失败 4 已红冲 5 已作废 6 已换开 7 红冲申请中 8 红冲确认中 9红冲失败")
    private String status;
    /**
     * 发票号码
     */
    @Schema(description = "发票号码")
    private String invoiceNumber;
    /**
     * 发票代码
     */
    @Schema(description = "发票代码")
    private String invoiceCode;
    /**
     * 备注
     */
    @Schema(description = "备注")
    private String remark;
    /**
     * 客户邮箱
     */
    @Schema(description = "客户邮箱")
    private String email;
    /**
     * 客户手机号
     */
    @Schema(description = "客户手机号")
    private String mobile;
    /**
     * 请求流水号
     */
    @Schema(description = "请求流水号")
    private String seqNo;
    /**
     * 校验码
     */
    @Schema(description = "校验码")
    private String checkCode;
    /**
     * 二维码
     */
    @Schema(description = "二维码")
    private String qrCode;
    /**
     * pdf下载路径
     */
    @Schema(description = "pdf下载路径")
    private String pdfUrl;
    /**
     * 红票
     */
    @Schema(description = "红票")
    private String reversalPdfUrl;
    /**
     * 发票密文
     */
    @Schema(description = "发票密文")
    private String ciphertext;
    /**
     * 合计不含税金额
     */
    @Schema(description = "合计不含税金额")
    private java.math.BigDecimal amountWithoutTax;
    /**
     * 合计税额
     */
    @Schema(description = "合计税额")
    private java.math.BigDecimal taxAmount;
    /**
     * 开票金额
     */
    @Schema(description = "开票金额")
    private java.math.BigDecimal amount;
    /**
     * 开票日期
     */
    @Schema(description = "开票日期")
    private java.time.LocalDateTime createDate;
    /**
     * 税控设备编号
     */
    @Schema(description = "税控设备编号")
    private String taxDeviceNo;
    /**
     * 开票审核人
     */
    @Schema(description = "开票审核人")
    private String reviewer;
    /**
     * 红冲状态
     */
    @Schema(description = "红冲状态, PENDING(\\\"待审核\\\"),\\n\" +\n" +
            "            \"WAITING(\\\"待红冲\\\"),\\n\" +\n" +
            "            \"SUCCESS(\\\"已红冲\\\"),\\n\" +\n" +
            "            \"FAILURE(\\\"红冲失败\\\")")
    private String reversalStatus;
    /**
     * 失败原因
     */
    @Schema(description = "失败原因")
    private String errorReason;
    /**
     * 账期
     */
    @Schema(description = "账期")
    private String orderCycle;

}
